
package limfic.persistencia.mysql.usuario;

import limfic.dominio.Usuario;
import limfic.persistencia.mysql.RepositorioGenerico;
import limfic.persistencia.RepositorioException;
import limfic.persistencia.UtilidadesDB;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author OpenCodes
 */
public class UsuarioRepositorio extends RepositorioGenerico<Usuario> implements IUsuarioRepositorio{
    
    public UsuarioRepositorio(Connection connection) {
        super(connection);
    }

    @Override
    public Usuario mapearFila(ResultSet resultSet) throws SQLException {
        int i = 1; // es el indice de la columna
		// ciudad
		int id = resultSet.getInt(i++);
		String nombre = resultSet.getString(i++);
        String password =  resultSet.getString(i++);
        Usuario usuario=null;
        usuario= new Usuario(id, nombre,password);
		return usuario; 
    }

    @Override
    protected String sqlExiste(String[] parametrosChekeo) {
        String sql = "Select id from usuario where nombre='" + parametrosChekeo[0] + "'";
        return sql;
    }

    @Override
    protected String sqlAgregar(Usuario usuario) {
        String sql="Insert into usuario (nombre, clave) values ('" + usuario.getNombre() + "','" + usuario.getPassword() + "')" ;
        return sql;
    }

    @Override
    protected String sqlModificar(Usuario usuario) {
        String sql="Update usuario set nombre='" + usuario.getNombre() + "', clave='" + usuario.getPassword() + "' where id=" + usuario.getId() ;
        return sql;
    }

    @Override
    protected String sqlEliminar(Usuario usuario) {
        String sql="Delete from usuario where id=" + usuario.getId() ;
        return sql;
    }

    @Override
    protected String sqlObtenerUno(String id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected String sqlObtenerAlgunos(String[] parametrosBusqueda) {
         String sql = "Select * from usuario where nombre like '%"
                + parametrosBusqueda[0] + "%'" ;
         return sql;
    }

    @Override
    protected String sqlObtenerTodos() {
         String sql = "Select * from usuario";
         return sql;
    }

    @Override
    public boolean validarAcceso(String nombre, String password) throws RepositorioException {
        String sqlValidacion;

        sqlValidacion = "Select id from usuario where nombre='" + nombre + "' and clave='" + password + "'";

        Statement stmValidacion = null;

        ResultSet resultSet = null;
        try {

           
            stmValidacion = connection.createStatement();
            stmValidacion.execute(sqlValidacion);
            resultSet = stmValidacion.getResultSet();
            while (resultSet.next()) {
                if (resultSet.getInt(1) > 0) {
                    return true;
                }
            }
            return false;

        } catch (SQLException e) {
            throw new RepositorioException("Fallo la comprobacion de acceso", e);
        } finally {
            UtilidadesDB.close(resultSet);
            UtilidadesDB.close(stmValidacion);
        }
    }

}
